package com.by.demo;

import com.by.util.DButils;

import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/*
自定义链接池
 */
public class MyDataSource {
    //1、创建一个集合用来保存链接数量
    /*
        Collections.synchronizedList: arraylist 不是线程安全的
         所以在应用的使用需要加上这个方法
     */

    private static List<Connection> pool= Collections.synchronizedList(
            new ArrayList<Connection>());

    /*
    构建10个链接数量 保存到list集合中
     */
    static{
        for (int i = 0; i < 10; i++) {
            Connection conn = DButils.getConnection();
            pool.add(conn);
        }
    }
    //提取链接池大小
    public int getSize(){
        return pool.size();
    }
    //获取链接
    /*
    一个链接进来 就会消耗一个链接数 remove链接数
     */
    public Connection getConnection(){
        if(pool.size()>0){
            return pool.remove(0);
        }else{
         throw  new RuntimeException("链接数量已用完");
        }
    }

}
